class Solution 
{
public:
void Change(string &a,int n)//itoa找不到该函数。。。。
{
    int A=n,count=0;
    
    while(A)//判断位数
    {
        A/=10;
        count++;
    }
    while(count>1)
    {
        count--;
        A=pow(10,count);
        a+=n/A+'0';
        n%=A;  
    }
    a+=n%10+'0';
}
    string compressString(string S)
    {
        //“双指针”判断法

        if(S.size()==0)//特殊情况
        return S;

        string ret;

         int prev=0,next=1;
         int count=1;
         ret+=S[prev];

         while(S[next]!='\0')
         {
           if(S[prev]!=S[next])
           {
           
               //入数据
              Change(ret,count);//当长度大于9（没考虑到）
               ret+=S[next];

               //更新状态
               prev=next;
               next+=1;
               count=1;
           }
           else
           {
                next++;
                count++;
           }
           
         }
         Change(ret,count);

         if(ret.size()<S.size())//判断是否要返回压缩后的串
         {
            return ret;
         }
         else
         {
             return S;
         }   
    }
};
